package cursopoo

new Clase2()

// ---------------------------------------------------------
class Clase {
    def valorPorDefecto
    def instVar = valorEnDeclaracion()

    Clase() {
        instVar = valorEnConstructor('Clase')
    }
    /*
    Explicaremos el significado de "static" mas adelante, por ahora entender que
    declara procedimientos que no forman parte de los metodos de instancia (son
    metodos "sueltos")
     */
    static def valorEnDeclaracion() {
        println 'Inicializacion de variables en declaracion'
        return 10
    }
    static def valorEnConstructor(clase) {
        println "Inicializacion en constructor ($clase)"
        return 20
    }
}
class Clase2 extends Clase {
    // Notar que no hay un super() el constructor por defecto de la super clase
    // se invoca siempre (otra diferencia mas que nos muestra que un constructor
    // NO se comporta como un metodo)
    Clase2() {
        instVar = valorEnConstructor('Clase2')
    }
}